package com.gestion.dao;

import com.gestion.dao.interfaces.IUsuarioDAO;
import com.gestion.modelo.dominio.TipoUsuario;
import com.gestion.modelo.dominio.Usuario;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * @author Mauri@<itsoluciones.com.ar>
 */
public class UsuarioDAO implements IUsuarioDAO {

    //<editor-fold defaultstate="collapsed" desc="Patrón Singleton">
    private static UsuarioDAO Instancia = null;
        
    public static UsuarioDAO getInstancia() {
        if (Instancia == null) {
            crearInstancia();
        }
        return Instancia;
    }
    
    private static void crearInstancia() {
        Instancia = new UsuarioDAO();
    }
    
    public UsuarioDAO() {
        //System.out.println(this.toString());
    }
    //</editor-fold>

    @Override
    public Usuario getUsuario(String nombre, String pass) {

        String sql = "SELECT * FROM usuario WHERE nombreUsuario = ? AND password = ?";// AND usuario_estado = '0'";
        PreparedStatement ps;
        try {
            ps = FabricaDAO.getConnection().prepareStatement(sql);
            ps.setString(1, nombre);
            ps.setString(2, pass);
            ResultSet rs = ps.executeQuery();
            if (rs.first()) {
                Usuario usuario = new Usuario(rs.getInt("id_usuario"),
                        rs.getString("nombreUsuario"),
                        rs.getString("password"),
                        TipoUsuario.valueOf(rs.getString("tipo")));
                return usuario;
            }
            return null;
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return null;
        }
    }

    @Override
    public Usuario getPorId(Long valorId) {
        String sql = "SELECT * FROM usuario WHERE id_usuario = ?";
        try {
            PreparedStatement ps = FabricaDAO.getConnection().prepareStatement(sql);
            ps.setLong(1, valorId);
            ResultSet rs = ps.executeQuery();
            if (rs.first()) {
                Usuario usuario = new Usuario(rs.getInt("id_usuario"),
                        rs.getString("nombreUsuario"),
                        rs.getString("password"),
                        TipoUsuario.valueOf(rs.getString("tipo")));
                return usuario;
            } else {
                return null;
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return null;
        }
    }

    @Override
    public Usuario insertar(Usuario u) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Usuario modificar(Usuario u) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<Usuario> getTodos() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
